
#ifndef GOMOKU_CORE_CORE_H__
# define GOMOKU_CORE_CORE_H__

# include <map>

# include <gomoku/core/Gomoku.h>

# include <gomoku/core/IPlayer.h>
# include <gomoku/core/IGui.h>
# include <gomoku/core/IReferee.h>

# include <gomoku/core/State.h>
# include <gomoku/core/StateStack.h>

namespace gomoku
{

    class Core
    {
    public:
        Core();
        ~Core();
        void run();
    private:
        void init();
        void pollEvent();
        void update(float);
        void render();
    private:
        gomoku::IReferee *_referee;
        gomoku::IGui *_gui;
        gomoku::IPlayer *_black;
        gomoku::IPlayer *_white;

        StateStack _states;
    public:
    };
}

#endif  // GOMOKU_CORE_CORE_H__
